﻿/*----------------------------------------------------------------
 * 
 * 版权所有：Copyright (C) 2013
 * 
 * 文件名：ChineseStringHelper.cs
 * 文件功能描述：
 * 
 * 
 * 作 者：zhangq
 * 邮 箱：ifunnyface@outlook.com
 * 日 期：2013-01-14 10:43:38
 * 
 * 
 * 修改标识： Author
 * 修改描述： 相关描述
 * 
 * ---------------------------------------------------------------- */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Common
{

    /// <summary>
    /// 汉字字符处理
    /// </summary>
    public class ChineseStringHelper
    {

        /// <summary>
        /// 汉字字符处理
        /// </summary>
        public ChineseStringHelper()
        {
            // TODO:
        }

        private string Capstr;



        /// <summary>
        /// 获取汉字字符串首字母
        /// </summary>
        /// <param name="ChineseStr"></param>
        /// <returns></returns>
        public string ChineseCap(string ChineseStr)
        {
            var ChinaStr = string.Empty;
            var len = ChineseStr.Length;
            for (var i = 0; i < len ; i++)
            {
                var CharStr = ChineseStr.Substring(i, 1);
                var ZW = Encoding.Default.GetBytes(CharStr);
                // 得到汉字符的字节数组
                if (ZW.Length == 2)
                {
                    int i1 = (short)(ZW[0]);
                    int i2 = (short)(ZW[1]);
                    long ChineseStr_int = i1 * 256 + i2;
                    //table of the constant list
                    // 'A'; //45217..45252
                    // 'B'; //45253..45760
                    // 'C'; //45761..46317
                    // 'D'; //46318..46825
                    // 'E'; //46826..47009
                    // 'F'; //47010..47296
                    // 'G'; //47297..47613

                    // 'H'; //47614..48118
                    // 'J'; //48119..49061
                    // 'K'; //49062..49323
                    // 'L'; //49324..49895
                    // 'M'; //49896..50370
                    // 'N'; //50371..50613
                    // 'O'; //50614..50621
                    // 'P'; //50622..50905
                    // 'Q'; //50906..51386

                    // 'R'; //51387..51445
                    // 'S'; //51446..52217
                    // 'T'; //52218..52697
                    //没有U,V
                    // 'W'; //52698..52979
                    // 'X'; //52980..53640
                    // 'Y'; //53689..54480
                    // 'Z'; //54481..55289

                    if ((ChineseStr_int >= 45217) && (ChineseStr_int <= 45252))
                    {
                        ChinaStr = "a";
                    }
                    else if ((ChineseStr_int >= 45253) && (ChineseStr_int <= 45760))
                    {
                        ChinaStr = "b";
                    }
                    else if ((ChineseStr_int >= 45761) && (ChineseStr_int <= 46317))
                    {
                        ChinaStr = "c";

                    }
                    else if ((ChineseStr_int >= 46318) && (ChineseStr_int <= 46825))
                    {
                        ChinaStr = "d";
                    }
                    else if ((ChineseStr_int >= 46826) && (ChineseStr_int <= 47009))
                    {
                        ChinaStr = "e";
                    }
                    else if ((ChineseStr_int >= 47010) && (ChineseStr_int <= 47296))
                    {
                        ChinaStr = "f";
                    }
                    else if ((ChineseStr_int >= 47297) && (ChineseStr_int <= 47613))
                    {
                        ChinaStr = "g";
                    }
                    else if ((ChineseStr_int >= 47614) && (ChineseStr_int <= 48118))
                    {

                        ChinaStr = "h";
                    }

                    else if ((ChineseStr_int >= 48119) && (ChineseStr_int <= 49061))
                    {
                        ChinaStr = "j";
                    }
                    else if ((ChineseStr_int >= 49062) && (ChineseStr_int <= 49323))
                    {
                        ChinaStr = "k";
                    }
                    else if ((ChineseStr_int >= 49324) && (ChineseStr_int <= 49895))
                    {
                        ChinaStr = "l";
                    }
                    else if ((ChineseStr_int >= 49896) && (ChineseStr_int <= 50370))
                    {
                        ChinaStr = "m";
                    }

                    else if ((ChineseStr_int >= 50371) && (ChineseStr_int <= 50613))
                    {
                        ChinaStr = "n";

                    }
                    else if ((ChineseStr_int >= 50614) && (ChineseStr_int <= 50621))
                    {
                        ChinaStr = "o";
                    }
                    else if ((ChineseStr_int >= 50622) && (ChineseStr_int <= 50905))
                    {
                        ChinaStr = "p";

                    }
                    else if ((ChineseStr_int >= 50906) && (ChineseStr_int <= 51386))
                    {
                        ChinaStr = "q";

                    }

                    else if ((ChineseStr_int >= 51387) && (ChineseStr_int <= 51445))
                    {
                        ChinaStr = "r";
                    }
                    else if ((ChineseStr_int >= 51446) && (ChineseStr_int <= 52217))
                    {
                        ChinaStr = "s";
                    }
                    else if ((ChineseStr_int >= 52218) && (ChineseStr_int <= 52697))
                    {
                        ChinaStr = "t";
                    }
                    else if ((ChineseStr_int >= 52698) && (ChineseStr_int <= 52979))
                    {
                        ChinaStr = "w";
                    }
                    else if ((ChineseStr_int >= 52980) && (ChineseStr_int <= 53640))
                    {
                        ChinaStr = "x";
                    }
                    else if ((ChineseStr_int >= 53689) && (ChineseStr_int <= 54480))
                    {
                        ChinaStr = "y";
                    }
                    else if ((ChineseStr_int >= 54481) && (ChineseStr_int <= 55289))
                    {
                        ChinaStr = "z";
                    }
                    Capstr = Capstr + ChinaStr;
                }
                else
                {
                    Capstr = Capstr + CharStr;
                }


            }

            return Capstr.ToUpper();

        }



        /// <summary>
        /// 
        /// </summary>
        /// <param name="ChineseStr"></param>
        /// <returns></returns>
        public int ChineseLength(string ChineseStr)
        {
            return System.Text.Encoding.Default.GetBytes(ChineseStr).Length;
        }


        ///// <summary>
        ///// 字符串长度
        ///// </summary>
        ///// <param name="ChineseStr">字符串</param>
        ///// <returns>长度</returns>
        //public static int ChineseLength(this string ChineseStr)
        //{
        //    return System.Text.Encoding.Default.GetBytes(ChineseStr).Length;

        //} 
    }

}